package modelo.operaciones;

import modelo.excepciones.ErrorDivisionPor0;
import modelo.excepciones.ValorNoPertenecienteAlDominio;
import modelo.funciones.Funcion;

public class Division implements OperacionEntreFunciones {
	/**
	 * 
	 * @param valor double en el cual se quiere evaluar las funciones.
	 * 		  Funcion f,g son las funciones que evaluara para luego realizar 
	 * 		  la division
	 * @return Un double que es el resultado de evaluar la funcion en valor 
	 * @throws ErrorDivisionPor0 Arroja esta excepcion si el valor
	 * 		   retornado por la funcion que sera divisor es 0.
	 * 			ValorNoPertenecienteAlDominio Arroja esta excepcion si el valor
	 * 		   a evaluar en cualquiera de las funciones no pertenece al dominio.
	 * 		   
	 */
	public double aplicar(Funcion f, Funcion g, double valor) throws ErrorDivisionPor0,ValorNoPertenecienteAlDominio{
		if (g.evaluar(valor)==0) throw new ErrorDivisionPor0();
		else return (f.evaluar(valor)/g.evaluar(valor));
	}

}

